/*
 * @Description:
 * @Author: 胡涛
 * @Date: 2023-09-07 11:27:38
 * @LastEditors: 胡涛
 * @LastEditTime: 2023-09-07 11:50:45
 */
import api from "@/api";
import {
  PagedAndSortedResultRequestDto,
  ListResultDto,
  PagedListResultDto,
} from "../types";
import {
  ConfigDefineAndSettingDto,
  ConfigSettingDto,
  GetConfigSettingInputDto,
  GetConfigValueInputDto,
  SaveAllSettingsInputDto,
  SaveSettingsInputDto,
  SetConfigValueInputDto,
} from "./types";

export default {
  /**
   * 获取单条记录
   * @param id
   * @param data
   * @returns
   */
  get(id: string): Promise<ConfigSettingDto> {
    return api.get("/api/Platform/configSetting/" + id);
  },
  /**
   * 获取列表
   * @param id
   * @param data
   * @returns
   */
  getList(
    data: Partial<PagedAndSortedResultRequestDto>
  ): Promise<PagedListResultDto<ConfigSettingDto>> {
    return api.get("/api/Platform/configSetting", data);
  },
  /**
   * 添加
   * @param id
   * @param data
   * @returns
   */
  create(data: Partial<ConfigSettingDto>): Promise<ConfigSettingDto> {
    return api.post("/api/Platform/configSetting", data);
  },
  /**
   * 修改
   * @param id
   * @param data
   * @returns
   */
  update(
    id: string,
    data: Partial<ConfigSettingDto>
  ): Promise<ConfigSettingDto> {
    return api.put("/api/Platform/configSetting/" + id, data);
  },
  /**
   * 删除
   * @param id
   * @returns
   */
  delete(id: string): Promise<ConfigSettingDto> {
    return api.delete("/api/Platform/configSetting/" + id);
  },

  /**
   * 批量删除
   * @param category
   * @returns
   */
  deleteAll(category: string): Promise<ConfigSettingDto> {
    return api.delete("/api/Platform/configSetting/deleteAll", {
      category,
    });
  },
  /**
   * 删除指定键的全部数据
   * @param key
   * @returns
   */
  deleteForKey(key: string): Promise<ConfigSettingDto> {
    return api.delete("/api/Platform/configSetting/deleteForKey", {
      key,
    });
  },
  /**
   * 获取配置信息
   * @param input
   * @returns
   */
  getConfigSetting(
    input: Partial<GetConfigSettingInputDto>
  ): Promise<ConfigDefineAndSettingDto> {
    return api.get("/api/Platform/configSetting/getConfigSetting", input);
  },
  /**
   * 获取用户配置信息
   * @param input
   * @returns
   */
  getUserConfigSetting(
    input: Partial<GetConfigSettingInputDto>
  ): Promise<ConfigDefineAndSettingDto> {
    return api.get(
      "/api/Platform/configSetting/getUserConfigSetting",
      input
    );
  },
  /**
   *保存指定分类对应的配置数据
   * @param input
   * @returns
   */
  saveConfig(input: SaveSettingsInputDto): Promise<boolean> {
    return api.post("/api/Platform/configSetting/saveConfig", input);
  },
  /**
   * 保存全部配置数据
   * @param input
   * @returns
   */ saveAllConfig(input: SaveAllSettingsInputDto): Promise<boolean> {
    return api.post("/api/Platform/configSetting/saveAllConfig", input);
  },
  /**
   * 保存指定分类对应的用户配置数据
   * @param input
   * @returns
   */ saveUserConfig(input: Partial<SaveSettingsInputDto>): Promise<boolean> {
    return api.post("/api/Platform/configSetting/saveUserConfig", input);
  },
  /**
   * 获取配置数据
   * @param input
   * @returns
   */
  getConfig(input: GetConfigSettingInputDto): Promise<Record<string, any>> {
    return api.get("/api/Platform/configSetting/getConfig", input);
  },
  /**
   * 获取配置值
   * @param input
   * @returns
   */
  getValue(input: GetConfigValueInputDto): Promise<string> {
    return api.get("/api/Platform/configSetting/getValue", input);
  },
  /**
   * 保存配置值
   * @param input
   * @returns
   */
  setValue(input: SetConfigValueInputDto): Promise<string> {
    return api.post("/api/Platform/configSetting/setValue", input);
  },
};
